package com.coded2.mobileposto.service;

import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;

import com.coded2.infra.comum.ComumService;
import com.coded2.mobileposto.dao.DistribuidorDAO;
import com.coded2.mobileposto.dao.FabricanteDAO;
import com.coded2.mobileposto.dao.ModeloDAO;
import com.coded2.mobileposto.model.Distribuidor;
import com.coded2.mobileposto.model.Fabricante;
import com.coded2.mobileposto.model.Modelo;

public class ModeloService extends ComumService<Modelo>{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@Inject
	ModeloDAO dao;
	
	@Inject
	FabricanteDAO fabDAO;
	
	@Override
	public List<Modelo> search(Modelo obj) throws Exception {
		return dao.search(obj);
	}

	@Override
	public Modelo searchByID(Modelo model) throws Exception {
		return dao.searchById(model);
	}

	@Override
	protected List<String> preSave(Modelo obj) {
		ArrayList<String> erros = new ArrayList<String>();
		//procurar montadoras com o mesmo nome
		try {
			List<Modelo> resultado = dao.search(obj);
			if (resultado != null && !resultado.isEmpty()){
				erros.add("Ja existe montadora com este nome cadastrado");
				return erros;
			}
			
		}catch(Exception e){
			erros.add(e.getMessage());
		}
		
		return erros;
	}

	@Override
	protected List<String> preUpdate(Modelo obj) {
		ArrayList<String> erros = new ArrayList<String>();
		//procurar montadoras com o mesmo nome
		try {
			List<Modelo> resultado = dao.search(obj);
			if (resultado != null && !resultado.isEmpty()){
				Modelo modelo = resultado.get(0);
				if(!modelo.getId().equals(obj.getId())){
					erros.add("Ja existe montadora com este nome cadastrado");
					return erros;
				}
				
			}
			
		}catch(Exception e){
			erros.add(e.getMessage());
		}
		
		return erros;
	}
	
	public List<Fabricante> recuperaFabricantes() {
		List<Fabricante> lista = new ArrayList<Fabricante>();
		try {
		lista = fabDAO.search(new Fabricante());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return lista;
	}
	
	
}
